package base

import (
	"jvm/rtda"
	"jvm/rtda/heap"
)

func InvokeMethod(invokeJFrame *rtda.JFrame, method *heap.Method) {
	jThread := invokeJFrame.JThread()
	newJFrame := jThread.NewJFrame(method)
	jThread.PushJFrame(newJFrame)

	argSlotSlot := int(method.ArgSlotCount())
	if argSlotSlot > 0 {
		for i := argSlotSlot - 1; i >= 0; i-- {
			slot := invokeJFrame.OperandStack().PopSlot()
			newJFrame.LocalVars().SetSlot(uint(i), slot)
		}
	}

}
